home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_400 / 429_01 / chess12 / charui.cpp < prev    next >
C/C++ Source or Header  |  1994-03-30  |  1KB  |  84 lines

  1. #include <dos.h>
  2.  
  3. #include "misc.hpp"
  4. #include "brdsize.hpp"
  5. #include "charui.hpp"
  6.  
  7. CHARUSERIFACE CharUI;
  8.  
  9. CHARUSERIFACE::CHARUSERIFACE(void)
  10.   {
  11.     union REGS r;
  12.  
  13.     // get cursor mode
  14.     r.h.ah = 3;
  15.     r.h.bh = 0;
  16.     int86(0x10, &r, &r);
  17.     cursorMode = r.x.cx;
  18.  
  19.     // clear screen
  20.     r.h.ah = 0;
  21.     r.h.al = 3;
  22.     int86(0x10, &r, &r);
  23.  
  24.     // clear cursor
  25.     r.h.ah = 1;
  26.     r.h.ch = 0x20;
  27.     r.h.cl = 0;
  28.     int86(0x10, &r, &r);
  29.  
  30.     return;
  31.   }
  32.  
  33. CHARUSERIFACE::~CHARUSERIFACE(void)
  34.   {
  35.     union REGS r;
  36.  
  37.     // clear screen
  38.     r.h.ah = 0;
  39.     r.h.al = 3;
  40.     int86(0x10, &r, &r);
  41.  
  42.     // restore cursor mode
  43.     r.h.ah = 1;
  44.     r.x.cx = cursorMode;
  45.     int86(0x10, &r, &r);
  46.     cursorMode = r.x.cx;
  47.  
  48.     return;
  49.   }
  50.  
  51. void CHARUSERIFACE::showChar(int row, int col, char c, BOOL inverse)
  52.   {
  53.     union REGS r;
  54.  
  55.     // position cursor
  56.     r.h.ah = 2;
  57.     r.h.bh = 0;
  58.     r.h.dh = (unsigned char) row;
  59.     r.h.dl = (unsigned char) col;
  60.     int86(0x10, &r, &r);
  61.  
  62.     // write character 
  63.     r.h.ah = 9;
  64.     r.h.bh = 0;
  65.     r.x.cx = 1;
  66.     r.h.al = (unsigned char) c;
  67.     r.h.bl = (unsigned char) (inverse ? 0x70 : 0x07);
  68.     int86(0x10, &r, &r);
  69.  
  70.     return;
  71.   }
  72.  
  73. uint CHARUSERIFACE::readKey(void)
  74.   {
  75.     union REGS r;
  76.  
  77.     // read a key
  78.     r.h.ah = 0;
  79.     int86(0x16, &r, &r);
  80.     if (r.h.al)
  81.       r.h.ah = 0;
  82.     return(r.x.ax);
  83.   }
  84.